package user

import (
	"strconv"

	"github.com/gin-gonic/gin"
)

func UserAPI(r *gin.Engine) {

	// GET: 根据ID获取用户信息
	r.GET("/user", func(c *gin.Context) {
		userId := c.Query("userId")
		num, _ := strconv.Atoi(userId)
		// fmt.Println(userId, num)
		userOne := getUserById(num)
		c.JSON(200, gin.H{
			"message": "Successful",
			"status":  200,
			"data":    userOne,
		})
	})

	// GET: 获取所有用户信息
	r.GET("/user/list", func(c *gin.Context) {
		userOne := getUserList()
		c.JSON(200, gin.H{
			"message": "Successful",
			"status":  200,
			"data":    userOne,
		})
	})

	// POST：新增用户
	// curl -X POST -H "Content-Type: application/json" -d '{"userNo":1,"userName":"龙皓晨","age":18}' http://localhost:8081/user/create
	r.POST("/user/create", func(c *gin.Context) {
		// 从请求中获取JSON数据
		var user User

		// 绑定JSON到结构体
		if err := c.ShouldBindJSON(&user); err != nil {
			c.JSON(400, gin.H{"error": err.Error()})
			return
		}

		res := CreateUser(user)

		if res {
			c.JSON(200, gin.H{
				"status":  200,
				"message": "Add Successful",
			})
		} else {
			c.JSON(500, gin.H{
				"status":  500,
				"message": "Add Failed",
			})
		}

	})

	// POST请求处理函数
	r.POST("/login", func(c *gin.Context) {
		// 从请求中获取JSON数据
		var json struct {
			User     string `json:"user" binding:"required"`
			Password string `json:"password" binding:"required"`
		}

		// 绑定JSON到结构体
		if err := c.ShouldBindJSON(&json); err != nil {
			c.JSON(400, gin.H{"error": err.Error()})
			return
		}

		// 假设我们在这里验证了用户名和密码
		// ...

		// 返回登录成功的响应
		c.JSON(200, gin.H{
			"status":  "logged in",
			"user":    json.User,
			"message": "Login successful",
		})
	})
}
